通过 MQTT 触发
本教程演示如何使用简单的 MQTT 消息远程触发您的 OV20i 摄像头。只需几个步骤,您就可以构建一个能够从网络任何位置捕获和处理图像的系统——无需复杂编程!
您将构建的内容: 一个简单的远程触发器,允许您通过网络发送基本消息来启动摄像头检测。
预计时间: 20-30 分钟
技能水平: 初学者
实际示例: 想象一下,操作员平板上的一个按钮可以立即触发摄像头检测零件——我们构建的就是这样一个系统,但使用的是 MQTT 消息而非按钮。
先决条件
开始之前,请确保您已具备:
- 已连接并正常工作的 OV20i 摄像头
- 已设置并准备好的 recipe
- 已配置 MQTT 通信(如有需要,请参见“MQTT Communication Setup”指南)
您的摄像头触发模式必须在 Imaging Setup 中设置为 Manual ——这告诉摄像头等待您的远程命令,而不是自动拍摄。
为什么 MQTT 触发如此简单
OV20i 让远程触发变得轻松:
- 无需编码 ——只需拖拽并连接几个节点
- 即时生效 ——发送消息,立即获得结果
- 消息可靠 ——MQTT 确保命令送达摄像头
- 任何设备均可触发 ——平板、电脑、PLC 或传感器
适用场景: 远程检测控制、自动化生产线,或任何需要从其他位置触发摄像头的情况。
步骤 1:快速检查摄像头
1.1 将摄像头设置为手动触发
- 进入 Recipe Editor
- 点击“Imaging Setup”
- 找到 Trigger Mode 并设置为“Manual”
- 点击保存
为什么选择 Manual? 这告诉摄像头“等待我的命令”,而不是自动拍照。
1.2 找到您的 Recipe 编号
- 在 Recipe Editor 中查看浏览器地址栏
- 找到
/recipe/
后面的数字(例如:URL 显示/recipe/10
,则编号为 10) - 记下此编号 — 稍后需要用到
步骤 2:打开 Flow Builder
2.1 进入 Node-RED
- 在 Recipe Editor 中点击“IO Block”
- 点击“Configure IO”
2.2 从头开始
如果画布上已有其他节点,没关系 ——我们将在旁边添加新的触发流程。
开始吧!
步骤 3:MQTT 触发的简单秘诀
您需要知道的是:摄像头远程拍照需要发送两条快速消息。
- 第一条消息:“摄像头,准备接收远程命令”
- 第二条消息:“现在拍照!”
3.1 拖拽以下 5 个节点到画布
从左侧面板拖入主区域:
- Inject(输入部分)——作为您的“触发按钮”
- Change(功能部分)——用于第一条消息
- Delay(功能部分)——两条消息间的短暂停顿
- Change(功能部分)——用于第二条消息
- MQTT Out(网络部分)——向摄像头发送消息
步骤 4:配置节点
4.1 设置触发按钮
- 双击 Inject 节点
- 将名称改为“Remote Trigger”
- 点击“Done”
4.2 设置消息 1(准备命令)
- 双击第一个 Change 节点
- 名称改为“Get Ready”
- 点击“Add”,选择“SET”
- 设置
msg.topic
为stream_mode/set
- 再次点击“Add”,选择“SET”
- 设置
msg.payload
为HMI_MODE
- 点击“Done”
作用: 告诉摄像头“准备接收远程命令”。
4.3 添加短暂延迟
- 双击 Delay 节点
- 设置延迟为 10 毫秒
- 点击“Done”
原因: 给摄像头一点时间准备。
4.4 设置消息 2(拍照命令)
- 双击第二个 Change 节点
- 名称改为“Take Picture”
- 点击“Add”,选择“SET”
- 设置
msg.topic
为hmi/[YOUR_RECIPE_NUMBER]/capture_mode
- 将 [YOUR_RECIPE_NUMBER] 替换为您的实际编号(例如
hmi/10/capture_mode
) - 再次点击“Add”,选择“SET”
- 设置
msg.payload
为single
- 点击“Done”
作用: 告诉摄像头“现在拍一张照片!”
4.5 设置消息发送节点
- 双击 MQTT Out 节点
- 选择您的 MQTT broker(应已配置)
- 名称改为“Send to Camera”
- 点击“Done”
步骤 5:连接所有节点
这是有趣的部分! 现在将节点连接起来形成流程。
5.1 连接方式
按如下方式连线:
- Remote Trigger → Get Ready → Send to Camera
- Remote Trigger → Delay → Take Picture → Send to Camera
示意图:
Remote Trigger ──→ Get Ready ──→ Send to Camera
│
└──→ Delay ──→ Take Picture ──→ Send to Camera
5.2 如何连接节点
- 点击并拖动节点右侧的小方块
- 将连线拖到下一个节点左侧
- 您会看到灰色连线连接它们
步骤 6:测试远程触发
6.1 激活流程
- 点击右上角红色“Deploy”按钮
- 确认出现“Successfully deployed”消息
6.2 试用
- 将工件放置在摄像头前(用于测试)
- 点击“Remote Trigger”节点上的按钮
- 观察摄像头拍照!
成功标志:
- 摄像头 LED 短暂闪烁
- 听到检测处理声音
- 库中出现新图像
6.3 检查结果
进入 Library 页面,您应看到带有最新时间戳的新图像。点击查看检测结果!
如果成功: 恭喜!您已远程触发摄像头。
如果失败: 请查看下方故障排除部分。
步骤 7:从其他设备使用(可选)
想用手机、平板或其他电脑触发? 操作如下:
7.1 使用任何 MQTT 应用
下载任意 MQTT 应用,连接摄像头 IP 地址的 1883 端口,然后:
- 发送第一条消息:
- Topic:
stream_mode/set
- Message:
HMI_MODE
- Topic:
- 稍等片刻,发送第二条消息:
- Topic:
hmi/[YOUR_RECIPE_NUMBER]/capture_mode
- Message:
single
- Topic:
7.2 命令行方式
Windows/Mac/Linux 上:
# 第一条消息
mosquitto_pub -h [CAMERA_IP] -t "stream_mode/set" -m "HMI_MODE"
# 第二条消息(将 10 替换为您的 recipe 编号)
mosquitto_pub -h [CAMERA_IP] -t "hmi/10/capture_mode" -m "single"
就是这样! 您的摄像头将从网络任何位置拍照。
步骤 8:验证与测试
8.1 端到端测试
完整工作流验证:
测试 | 操作 | 预期结果 | 状态 |
---|---|---|---|
手动触发 | 点击注入按钮 | 图像被捕获并处理 | ☐ |
HMI 模式激活 | 检查摄像头状态 | 摄像头切换到 HMI 模式 | ☐ |
执行检测 | 验证处理 | 调试显示检测结果 | ☐ |
外部触发 | 发送 MQTT 命令 | 远程触发成功 | ☐ |
8.2 性能验证
监控以下指标:
- 触发响应时间: 从 MQTT 消息到图像捕获
- 处理时长: 完成检测所需时间
- 结果交付: 调试输出时间
- 系统可靠性: 多次测试触发稳定性
8.3 生产准备
部署到生产前:
- 使用实际工件和检测条件测试
- 验证与外部系统集成
- 确认 MQTT 通信网络可靠
- 记录触发主题和消息格式
步骤 9:快速故障排除
无法正常工作?以下是常见解决方案:
9.1 摄像头不拍照
问题 | 快速解决方法 |
---|---|
点击触发无反应 | 检查“Take Picture”节点中的 recipe 编号是否正确 |
摄像头拍照但无检测 | 确认 recipe 已激活且有训练模型 |
触发偶尔有效 | 确认 Imaging Setup 中触发模式为 Manual |
9.2 MQTT 问题
问题 | 快速解决方法 |
---|---|
MQTT 节点出现红点 | 检查 MQTT broker 连接配置 |
部署按钮灰显 | 先点击画布任意处,再尝试部署 |
节点无法连接 | 确保从节点右侧小方块拖动连线 |
仍有问题? 请再次确认 MQTT 通信配置正确(参见 MQTT Communication Setup 指南)。
您成功了!🎉
恭喜! 您已实现 OV20i 摄像头的远程控制。只需几次点击,您构建了一个能够:
- 从网络任何位置触发检测
- 支持手机、平板、电脑等设备发送 MQTT 消息
- 集成 PLC、传感器或自定义应用
- 通过不同 recipe 编号扩展多摄像头系统
接下来做什么?
基础搭建完成后,您可以:
简单后续步骤
- 使用 MQTT 应用从不同设备测试
- 为不同 recipe 创建多个触发器
- 将其纳入生产流程
高级思路
- 连接 PLC,实现自动化生产线
- 构建自定义应用,触发多台摄像头
- 添加结果转发,发送检测数据到其他系统
- 创建操作员仪表盘,带触发按钮
真实案例
其他用户如何使用 MQTT 触发:
- 质量控制站: 操作员扫描条码,系统触发摄像头检测
- 输送线: 传感器检测到零件,自动触发检测
- 手动检测: 操作员平板上的“Inspect”按钮
- 生产监控: 中央系统协调多台摄像头
应用无限可能 ——一切从您刚搭建的简单系统开始!